let obj1 = {};
let obj2: {} = { name: 'John', age: 25 };
let obj3: {} = 123;
let obj4: {} = 'Hello';

let obj5: object = {name: 'Tom', age: 26};
let obj6: object = [1, 2, 3];
// let obj7: object = 'Hello';
// console.log(obj5.name)

const temp1: Object = { name: 'jack' };
const temp2: Object = () => {};
const temp3: Object = [];
const temp4: Object = new String("hello");
const temp5: Object = "world";
const temp6: Object = 123;
const temp7: Object = true;
const temp8: Object = Symbol("a");

// 关闭strictNullChecks，下面也成立
const temp9: Object = undefined;
const temp10: Object = null;
const temp11: Object = void 0;

let str1: string = 'Hello';
let str2: String = 'Hello';

let str3: String = new String('Hello');
// let str4: string = new String('Hello'); // Error

str2 = str1;
// str1 = str2; // Error

// 类型字面量 一样有这样的兼容性问题
let str4: 'Hello' = 'Hello';
str2 = str4;
str1 = str4;

// str4 = str1; // Error